package com.zjxf.service;

import com.alibaba.fastjson.JSONObject;
import com.zjxf.base.bean.po.PmsAsProductClassify;
import com.zjxf.base.bean.ro.RoPmsAsProductClassify;
import com.zjxf.base.bean.vo.VoPmsAsProductClassify;
import com.zjxf.base.common.OperationException;
import org.springframework.data.domain.Page;

import java.util.List;

/**
 * 农副产品分类
 *
 * @author ZhangWei
 * @date 2021/4/6/006 16:53
 */
public interface PmsAsProductClassifyService {

    /**
     * 管理添加或修改
     * @param vo
     */
    void adminAddOrUpdate(VoPmsAsProductClassify.AdminAddOrUpdate vo);


    /**
     * 商家添加或修改
     * @param vo
     */
    void sellAddOrUpdate(VoPmsAsProductClassify.SelladdOrUpdate vo);

    /**
     * 删除
     * @param id
     */
    void delete(Long id) throws OperationException;

    /**
     * 回显
     * @param id
     * @return
     */
    PmsAsProductClassify getEntity(Long id) throws OperationException;

    /**
     * ro回显
     * @param pmsAsProductClassify
     * @return
     */
    RoPmsAsProductClassify.Details getEntityRo(PmsAsProductClassify pmsAsProductClassify);

    /**
     * 分页
     * @param filter
     * @return
     */
    Page<PmsAsProductClassify> page(VoPmsAsProductClassify.filter filter);

    /**
     * ro分页
     * @param pmsAsProductClassifyPage
     * @return
     */
    JSONObject pageRo(Page<PmsAsProductClassify> pmsAsProductClassifyPage);

    /**
     * 全部分类
     * @return
     */
    List<PmsAsProductClassify> getList();

    /**
     * ro全部分类
     * @param pmsAsProductClassifies
     * @return
     */
    List<RoPmsAsProductClassify.ListWithChild> listWithChildren(List<PmsAsProductClassify> pmsAsProductClassifies);

    /**
     * 查找根分类
     * @param pId
     * @return
     */
    List<PmsAsProductClassify> findByPId(Long pId);

    /**
     * ro查找根分类
     * @param pmsAsProductClassifyList
     * @return
     */
    List<RoPmsAsProductClassify.ListWithChild> roList(List<PmsAsProductClassify> pmsAsProductClassifyList);
}
